#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<string>
#include<cmath>
using namespace std;
vector<int> transfer(string s) {
	vector<int> a(s.size()+1);
	a[0] = s.size();
	for (int i = 1; i <= s.size(); i++) {
		a[i] = s[s.size() - i] - '0';
	}
	
	return a;
}
//int main() {
//	string s1, s2;
//	cin >> s1 >> s2;
//
//	vector<int> a1(501), a2(501);
//	a1 = transfer(s1), a2 = transfer(s2);
//
//	vector<int> ans(502);
//	ans[0] = max(a1[0], a2[0]) + 1;
//	for (int i = 1; i < ans[0]; i++) {
//		ans[i] += a1[i] + a2[i];
//		ans[i + 1] = ans[i] / 10;
//		ans[i] %= 10;
//	}
//	if (ans[ans[0]] == 0 && ans[0] > 0)
//		ans[0]--;
//
//	for (int i = ans[0]; i >= 1; i--) {
//		cout << ans[i];
//	}
//	return 0;
//}

//int main() {
//	string s1, s2;
//	cin >> s1 >> s2;
//
//	vector<int> a1(2001), a2(20001);
//	a1 = transfer(s1), a2 = transfer(s2);
//
//	vector<int> ans(40002);
//	ans[0] = a1[0]+a2[0];
//	for (int i = 1; i <= a1[0]; i++) {
//		for (int j = 1; j <= a2[0]; j++) {
//			ans[j + i - 1] += a1[i] * a2[j];
//			ans[j + i] += ans[j + i - 1] / 10;
//			ans[j + i - 1] %= 10;
//		}
//	}
//
//	while(ans[ans[0]] == 0 && ans[0] > 1)
//		ans[0]--;
//
//	for (int i = ans[0]; i >= 1; i--) {
//		cout << ans[i];
//	}
//	return 0;
//}

int main() {
	string s1, s2;
	cin >> s1 >> s2;

	vector<int> a1(2001), a2(20001);
	a1 = transfer(s1), a2 = transfer(s2);

	int signs = 1;
	vector<int> ans(40002);

	if (a1[0] < a2[0]) {
		signs = -1;
		vector<int> tmp = a1;
		a1 = a2;
		a2 = tmp;
	}
	ans[0] = a1[0];
	for (int i = 1; i <= a2[0]; i++) {
		if (a1[i] < a2[i]) {
			a1[i] += 10;
			a1[i + 1]--;
		}
		ans[i] += a1[i] - a2[i];
	}

	while(ans[ans[0]] == 0 && ans[0] > 1)
		ans[0]--;
	
	if (signs == -1) {
		cout << "-";
	}
	for (int i = ans[0]; i >= 1; i--) {
		cout << ans[i];
	}
	return 0;
}